/* 1.输入框绑定 值改变事件 input事件
    1. 获取输入框的值
    2. 合法性判读
    3. 检验通过把输入框的值发送到后台
    4. 返回数据打印
  2. 防抖 （防止抖动） 定时器
    0 防抖 是防止是输入框中 重复输入 重复发送请求
    1. 节流是页面的上拉和下拉
    1. 定义全局的定时器id
 */ 
import { request } from "../../request/index.js";
import regeneratorRuntime from '../../lib/runtime/runtime';
Page({
  data: {
    goods: [],
    // 取消按钮
    isFocus: false,
    // 输入框的值
    inputValue: ""
  },
  // 全局定时器
  TimeId: -1,
  // 输入框的值改变就会触发的事件
  handleInput(e) {
    this.setData({
      isFocus: true
    })
    // 获取输入框的值
    const value = e.detail.value;
    // 检验合法性
    if(!value.trim()) {
      // 不合法 
      this.setData({
        goods: [],
        isFocus: false
      })
      return;
    } 
    // 3. 准备发送请求获取数据
    clearTimeout(this.TimeId);
    this.TimeId = setTimeout(() => {
      this.fetchQuery(value)
    },1000)
  },
  // 点击取消按钮
  handleCancle() {
    this.setData({
      inputValue: "",
      isFocus: false,
      goods: []
    })
  },
  // 发送请求获取搜索结果
  async fetchQuery(query) {
    const res = await request({url: '/goods/qsearch',data: {query}})
    this.setData({
      goods: res
    })
  }
})